#ifndef __PID_H
#define __PID_H

typedef struct _pid
{
    float actual_value;  // 实际值 每次反馈回来的值
    float error;         // 偏差值
    float Kd, Ki, Kp;    // 比例、积分、微分常数
    float P, I, D;       // 比例项 积分项 微分项
    float error_pre;     // E[k-1]  //上一次误差
    float error_pre_pre; // E[k-2]  //上上次误差
    float set_value;     // 设定值 你期望系统达到的值
    float integral;      // 积分值
} pid_t;

extern void pid_init(float kp, float ki, float kd, pid_t *pid);
extern float pid_position(pid_t *pid);
extern float pid_incremental(pid_t *pid);

#endif
